/*
  火柴棍 5
  题目描述
    主讲家的娃生下来已经 3 天了，由于主讲师承葛朗台，甚至不愿掏钱给娃多买一盒火柴，
    娃只能将仅剩的一些火柴棍视若珍宝。
    任意输入一个整数 m (1 <= m <= 8)，表示火柴棍数量，输出这些火柴棍还能拼出多少个不同的自然数。

    如下图给出了用火柴棍拼出的部分数字的示例，说明如下:
       数字 0 需要用 6 根火柴，数字 1 需要用 2 根火柴，数字 2 需要用 5 根火柴，
       数字 3 需要用 5 根火柴，数字 4 需要用 4 根火柴, 数字 5 需要用 5 根火柴，
       数字 6 需要用 6 根火柴，数字 7 需要用 3 根火柴，数字 8 需要用 7 根火柴，
       数字 9 需要用 6 根火柴。

      ●───●     ●   ●───●    ●───●    ●   ●   ●───    ●───    ●───●   ●───●   ●───●
      │   │     │       │        │    │   │   │       │           │   │   │   │   │
      ●   ●     ●   ●───     ●───●    ●───●   ●───●   ●───●       ●   ●───●   ●───●
      │   │     │   │            │        │       │   │   │       │   │   │       │
      ●───          ●───     ●───             ●───    ●───            ●───    ●───

  输入描述
    任意输入一个整数 m (1 <= m <= 8)，表示火柴棍数量
  输出描述
    输出这些火柴棍还能拼出多少个不同的整数。
  样例1
    输入
      5
    输出
      9
    解释
      当 5 根火柴时，可以拼出 1、2、3、4、5、7、11、17、71 这 9 个数字
  数据范围
    1 <= m <= 8
*/

#include <iostream>

using namespace std;

int s[1112] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; // 注意: 8 根火柴最大能拼出的数是 1111

// 该函数用于求出: 对于输入整数 a (a > 0), 需要用多少根火柴才能拼出来
int func(int a) {
    int n = 0;

    while (a > 0) {
        n += s[a % 10];
        a /= 10;
    }
    return n;
}

int main() {
    int m, cnt = 0;

    cin >> m;

    /*
      求出 10 ~ 1111 之间的所有整数需要多少根火柴才能拼出来, 并将对应的值保存到全局变量 a 中!
      其中, a[i] 表示要拼出整数 i 需要的火柴数量
      由于 a[0] ~ a[9] 的值已经预先初始化好了, 所以我们只用逐个计算并为 a[10] ~ a[1111]赋值
    */
    for (int i = 10; i <= 1111; i++) {
        s[i] = func(i);
    }

    /*
      暴力枚举出 0 - 1111 之间的数字，判断使用火柴棍数量小于等于 m 的数，并使用 cnt 统计个数
    */
    for (int i = 0; i <= 1111; i++) {
        if (s[i] <= m) {
            cnt++;
        }
    }

    cout << cnt;

    return 0;
}